#ifndef BASICOS_H
#define BASICOS_H
/*----------------------------------*/
#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;
/*----------------------------------*/
//! @details Classe virtual que contem a base de qualquer entidade usada no programa.
class TipoBasico
{
    private:
        //! @details Metodo virtual que e implemetando por classes filhas para a validacao do atributo valor
        virtual void validar(string)=0;
    protected:
        //! @param Parametro que guarda string
        string valor;
    public:
        //! @details Metodo que atribui a valor uma string
        //! @param string parametro que contem uma string a ser atribuida
        void setValor(string);
        //! @details Metodo que retorna o atributo valor
        string getValor() const;
};

inline void TipoBasico::setValor(string valor)
{
    validar(valor);
    this->valor = valor;
}

inline string TipoBasico::getValor() const
{
    return valor;
}
#endif
